(function($) {
	$.fn.extend({
		/*
		 *对数据进行格式化
		 */
		formatData: function(_opt) {
			var opt = {showColor:true,key:"value",value:"realName",color:"color"};
			$.extend(opt,_opt || {});
			$(this).each(function() {
				var $self = $(this);
				//进行格式化的属性
				var formatData = $(this).attr("formatData");
				//如果属性为空则返回不再机型处理
				if (StringUtils.isEmpty(formatData)) {
					return;
				}
				//将配置的属性转换成json对象
				var json = DWZ.jsonEval(formatData);
				//获取配置的url地址
				var url = json.url;
				//获取配置的数据
				var data = json.data || {};
				//获取缓存中的对象
				var  cacheObj= $(document).data(formatData);
				//如果缓存对象存在将不再请求远程服务器
				if(cacheObj) {
                    json = cacheObj;
				}
				//如果链接存在,并且没有缓存,请求服务器
				if (url && !cacheObj) {
					$.ajax({
						url: url,
						data: data,
						async: false,
						success: function(data, responseStatus, response) {
							//获取请求服务器的内容
							var text = response.responseText;
							//转换成对象
							var obj = DWZ.jsonEval(text);
							obj = $.makeArray(obj);
							//生成一个临时变量
							var tmp = {};
							//对获取的对象进行遍历
							$.each(obj, function(index, obj) {
								var key = obj[opt.key];
								var value = obj[opt.value];
								var color = obj[opt.color];
								tmp[key] = value;
								tmp[key+"_color"] = color;
							});
							json = tmp;
							$(document).data(formatData, json);
						}
					});
				}
				//获取当前数据
				var text = $.trim($self.html() || $self.val());
				if ($.isPlainObject(json)) {
					//遍历对象的属性
					for (var attr in json) {
						var color = json[attr+"_color"] || false;
						if (attr == text) {
							//如果是input 输入框
							if ($self.is(":input")) {
								$self.val(json[attr]);
								if(color&&opt.showColor) {
                                   $self.css("color",color);
								}					
							} else {
								var text = json[attr];
								if(color&&opt.showColor) {
									text = "<span style='color:"+color+"'>"+text+"</span>";
								}
								$self.html(text);
							}

						}
					}
				}
			});
		},
		showElement: function(_box) {
			var $p = $(_box || document);
			$(this).each(function() {
				var ref = $(this).attr("ref");
				var $tr = $(this).parents("tr");
				if (StringUtils.isNotEmpty(ref)) {
					var first = ref.indexOf("[");
					var second = ref.indexOf("]");
					if (first > 0 && second > 0) {
						var id = ref.substring(0, first);
						var value = ref.substring(first + 1, second);
						var curValue = null;
						var $formatDataElement = $("#" + id, $tr);
						var formatData = $formatDataElement.attr("formatData");
						if (StringUtils.isNotEmpty(formatData)) {
							var json = DWZ.jsonEval(formatData);
							var html = $formatDataElement.text();
							if ($.isPlainObject(json)) {
								for (var attr in json) {
									if (html == json[attr]) {
										curValue = attr;
									}
								}
							}
						} else {
							curValue = $formatDataElement.html();
						}
						if (curValue != value) {
							$(this).remove();
							$(this).parents("li").remove();
						}
					}
				}
			});
		},
		dateFormat: function() {
			var basePattern = "yyyy-MM-dd HH:mm:ss.SSS";
			$(this).each(function() {
				var pattern = $(this).attr("datepattern");
				var index = basePattern.indexOf(pattern);
				if (index < 0) {
					console.warn("表达式不正确");
					return;
				}

				var length = pattern.length;
				var end = index + length;
				if ($(this).is(":input")) {
					var value = $.trim($(this).val());
					if (value && value.length >= end) {
						$(this).val(value.substring(index, end));
					}
				} else {
					var html = $.trim($(this).text());
					if (html && html.length >= end) {
						$(this).html(html.substring(index, end));
					}
				}
			});
		}
	});
})(jQuery);